$(function () {
    //抽取js变量
    var menu_datagrid = $("#menu_datagrid");
    var menu_dialog = $("#menu_dialog");
    var menu_form = $("#menu_form");

    //定义一个父菜单对象
    var parent = {
      parentId : null,
      parentText : null,
      grandpaId : null
    }
    menu_datagrid.datagrid({
        url:'/menu/list.do',
        fitColumns:true,
        fit:true,//自动填充
        toolbar:'#menu_toolbar',
        pagination:true, //在DataGrid控件底部显示分页工具栏
        rownumbers:true, //显示一个行号列。
        singleSelect:true,//只允许选择一行
        striped:true, //显示斑马线效果
        columns:[[
            {field:'id',checkbox: true},
            {field:'text',title:'菜单名称',width:80},
            {field:'url',title:'URL',width:80},
            {
                field: 'parent', title: '上级菜单', width: 80,
                formatter: function (value, row, index) {
                    return value ? value.text : "";
                }
            }
        ]],
        onLoadSuccess: function (data) {
          // 无数据就 不执行
          if (!data.rows.length) return
          // 取出 一条
          var row = data.rows[0];
          // 设置 返回上一级的 id
          if (row.parent && row.parent.parent) {
            parent.grandpaId = row.parent.parent.id
          } else {
            parent.grandpaId = null
          }
          // 设置 parentText
          if (!row.parent) {
            parent.parentText = null;
            parent.parentId = null;
          } else {
            parent.parentText = row.parent.text
            parent.parentId = row.parent.id
          }
        }
    });



    var methodObj = {
        add:function () {
            //打开弹出框
            menu_dialog.dialog('open');
            //设置标题
            menu_dialog.dialog('setTitle','新增菜单');
            //获取当前父菜单名称
            var data = menu_datagrid.datagrid('getData');

            //设置父菜单的id
            // var parentId = data.rows[0].parent.id;
            $("#parentId").textbox('setValue',parent.parentId);

            //设置父菜单的text用于回显
            // var parentText = data.rows[0].parent.text;
            $("#parentText").textbox('setValue',parent.parentText);
        },

        edit:function () {
            //获取当前选中的行
            var row = menu_datagrid.datagrid('getSelected')
            if(!row){
                //提示用户
                $.messager.alert('温馨提示','请选择一条数据!','warning');
                return;
            }
            //回显表单数据(根据同名匹配的原则,row对象中的属性名要与form中的name相同才可以回显)
            menu_form.form('load',row);

            //获取当前父菜单名称
            var data = menu_datagrid.datagrid('getData');

            //设置父菜单的id
            // var parentId = data.rows[0].parent.id;
            $("#parentId").textbox('setValue',parent.parentId);

            //设置父菜单的text用于回显
            // var parentText = data.rows[0].parent.text;
            $("#parentText").textbox('setValue',parent.parentText);

            //打开弹出框
            menu_dialog.dialog('open');

            //设置标题
            menu_dialog.dialog('setTitle','编辑菜单');
        },
        save:function () {
            //提交表单
            menu_form.form('submit',{
                url:'/menu/saveOrUpdate.do',
                onSubmit:function (param) {
                    //手动调用验证表单的方法
                    return menu_form.form('validate');
                },

                success:function (data) {
                    data = $.parseJSON(data);
                    if(data.success){
                        //提示用户操作结果
                        $.messager.alert('温馨提示','保存成功!','info',function () {
                            //关闭弹出框
                            methodObj.cancel();
                            //让datagrid重新重新菜单数据
                            menu_datagrid.datagrid('reload');
                        })

                    }else{
                        $.messager.alert('温馨提示',data.msg,'error')
                    }
                }
            })
        },
        cancel:function () {
            menu_dialog.dialog('close');
        },
        del:function () {
            //判断是否有数据
            var row = menu_datagrid.datagrid('getSelected');
            if(!row){
                //提示用户
                $.messager.alert('温馨提示','请选择一条数据!','warning');
                return;
            }
            //弹出确认框
            $.messager.confirm('确认','您确定要操作吗?',function (r) {
                if (r) {
                    //发送请求到后台
                    $.get("/menu/delete.do",{id:row.id},function (data) {
                        if (data.success) {
                            $.messager.alert('温馨提示','操作成功!','info',function () {
                                menu_datagrid.datagrid('reload');
                            })
                        }else{
                            $.messager.alert('温馨提示','操作失败','error');
                        }
                    })
                }
            })
        },
        //返回下级菜单
        returnDown:function () {
            var row = menu_datagrid.datagrid("getSelected");
            if (!row) {
                $.messager.alert("温馨提示", '请选择一条数据', 'warning')
                return
            }
            //加载数据之前,把自己的id和text赋值给父菜单对象,用于add增加菜单显示父菜单信息
            // if(row.parent){
            //     parent.grandpaId = row.parent.id;
            // }
            parent.grandpaId = parent.parentId ;

            //加载和显示数据,发送额外请求parentId
            menu_datagrid.datagrid('load', {
                parentId : row.id ,
            });

            parent.parentId = row.id;
            parent.parentText = row.text;
        },
        //返回根菜单
        returnRoot:function () {
            menu_datagrid.datagrid('load', {
            });
        },
        //返回上级菜单
        returnUp:function () {
            var data = menu_datagrid.datagrid("getData");
            var row = data.rows[0];

            // id 和 text 设置 在 onLoadSuccess 里面
            menu_datagrid.datagrid('load', {
                grandpaId: parent.grandpaId,
            })

        }
    }


    $("a[data-cmd]").click(function () {
        var methodName = $(this).data("cmd");
        methodObj[methodName]();
    })


    menu_dialog.dialog({
        width:300,
        height:385,
        buttons:'#form_btns',
        closed:true,
        onClose:function () {
            //清空表单
            menu_form.form('clear');
        }
    })
})










